package com.liuugoqing.structural.flyweight;

/**
 * 俄罗斯方块
 *
 * 下面的图片是众所周知的俄罗斯方块中的一个个方块，如果在俄罗斯方块这个
 * 游戏中，每个不同的方块都是一个实例对象，只是颜色不同，这些对象就要占
 * 用很多的内存空间
 * @Author : liugq
 * @Date : 2022/7/5 16:46
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public class TestBox {
    public static void main(String[] args) {
        //通过工厂获取实例
        BoxFactory boxFactory = BoxFactory.getInstance();
        //获取形状 I
        AbstractBox i = boxFactory.getBox("I");
        i.display("红色");

        //获取形状 O
        AbstractBox o = boxFactory.getBox("O");
        o.display("黑色");

        //获取形状 O
        AbstractBox o1 = boxFactory.getBox("O");
        o1.display("蓝色");

        //由于使用享元模式，所以两个O是一样的对象
        System.out.println(o == o1);
    }
}
